package com.lp.biz.message.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lp.biz.content.model.entity.BizCoreContent;
import com.lp.biz.member.model.entity.Member;
import com.lp.biz.message.model.entity.BizMessageSystem;
import com.lp.biz.train.model.entity.BizTrainClass;

import java.time.LocalDate;
import java.util.List;

/**
 * @program: backend
 * @description: BizMessageSystem 服务类
 * @author Ke.Song
 * @since 2024-04-27 14:51:34
 */
public interface BizMessageSystemService extends IService<BizMessageSystem> {

    /**
     * 购买会员
     *
     * @param expirationDate 到期时间
     * @param memberId       会员id
     */
    void buyMembers(LocalDate expirationDate, Integer memberId);

    /**
     * 购买训练营
     * @param trainName 训练营名字
     * @return 处理结果
     */
    BizMessageSystem buyTrain(String trainName);

    /**
     * 邀请其他用户
     * @param member 用户对象
     * @return 处理结果
     */
    BizMessageSystem invite(Member member);

    /**
     * 会员即将到期
     *
     * @return 处理结果
     */
    BizMessageSystem membersToExpire();

    /**
     * 会员到期
     *
     * @return 处理结果
     */
    BizMessageSystem membersExpire();

    /**
     * 加入班级
     *
     * @param className 班级Name
     * @param classId   班级id
     * @param memberId 用户id
     * @return 处理结果
     */
    BizMessageSystem joinTheClass(String className, Integer classId, Integer memberId);

    /**
     * 任务通知
     * @return 处理结果
     */
    BizMessageSystem taskNotice();

    /**
     * 下级退款通知
     *
     * @param memberId 用户id
     * @param nickName 下级用户昵称
     */
    void lowerLevelRefund(Integer memberId, String nickName);

    /**
     * 退休人员审批通过
     * @param memberId 用户ID
     */
    void pensionMemberPass(Integer memberId);

    /**
     * 获取优惠券
     * @param memberId 用户ID
     */
    void addCoupon(Integer memberId);

    /**
     * 参加活动
     *
     * @param memberId   用户id
     * @param trainClass 班级对象
     * @return 消息体
     */
    BizMessageSystem inActivity(Integer memberId, BizTrainClass trainClass);

    /**
     * 申请退休福利 - 通过
     * @param memberId 用户id
     */
    void pensionMemberSuccess(Integer memberId);

    /**
     * 申请退休福利 - 未通过/部分未通过
     *
     * @param memberId 用户id
     * @param names 未通过名单
     */
    void pensionMemberFail(Integer memberId, String names);

    /**
     * 申请讲书讲故事活动
     * @param memberId 用户id
     */
    void applyActivity(Integer memberId);

    /**
     * 赠送课程消息
     *
     * @param memberId    用户id
     * @param coreContent 课程
     */
    void giveCourse(Integer memberId, BizCoreContent coreContent);

    /**
     * 批量插入
     * @param dataList 数据集
     */
    void insertBatch(List<BizMessageSystem> dataList);
}
